1 from tkinter import*
2 from
tkinter import ttk
3 import tkinter.messagebox
4 import datetime
5 import Fee_Backend

6
7
8 class
Fee():
9     def __init__(self, master):
10         self.master = master
11         self.master.title(
'School Management System/Fee Report')
12         self.master.geometry(
'1350x750')
13         self.master.config(bg=
'lightblue')
14
15         # ==================================================Variables=================================================
16         self.recpt = StringVar()
17         self.name = StringVar()
18         self.admsn = StringVar()
19         self.date = StringVar()
20         self.branch = StringVar()
21         self.sem = StringVar()
22         self.total = DoubleVar()
23         self.paid = DoubleVar()
24         self.due = DoubleVar()
25
26         # ==================================================Functions=================================================
27         def Tuple(
event):
28             
try:
29                 
global st
30                 index = self.list.curselection()[
0]
31                 st = self.list.
get(index)
32
33                 self.recpt_entry.delete(
0, END)
34                 self.recpt_entry.insert(END, st[
1])
35                 self.name_entry.delete(
0, END)
36                 self.name_entry.insert(END, st[
2])
37                 self.admsn_entry.delete(
0, END)
38                 self.admsn_entry.insert(END, st[
3])
39                 self.Date_entry.delete(
0, END)
40                 self.Date_entry.insert(END, st[
4])
41                 self.branch_entry.delete(
0, END)
42                 self.branch_entry.insert(END, st[
5])
43                 self.sem_entry.delete(
0, END)
44                 self.sem_entry.insert(END, st[
6])
45                 self.total_entry.delete(
0, END)
46                 self.total_entry.insert(END, st[
7])
47                 self.paid_entry.delete(
0, END)
48                 self.paid_entry.insert(END, st[
8])
49                 self.due_entry.delete(
0, END)
50                 self.due_entry.insert(END, st[
9])
51             except IndexError:
52                 pass
53
54         def Insert():
55             
if (len(self.admsn.get()) != 0):
56                 Fee_Backend.insert(self.recpt.
get(), self.name.get(), self.admsn.get(), self.date.get(),
57                                    self.branch.
get(), self.sem.get(), self.total.get(), self.paid.get(),
58                                    self.due.
get())
59                 self.list.delete(
0, END)
60                 self.list.insert(END, (self.recpt.
get(), self.name.get(), self.admsn.get(), self.date.get(),
61                                        self.branch.
get(), self.sem.get(), self.total.get(), self.paid.get(),
62                                        self.due.
get()))
63
64         def View():
65             self.list.delete(
0, END)
66             
for row in Fee_Backend.view():
67                 self.list.insert(END, row, str(
' '))
68
69         def Reset():
70             self.recpt.
set(' ')
71             self.name.
set(' ')
72             self.admsn.
set(' ')
73             #self.date.
set(' ')
74             self.branch.
set(' ')
75             self.sem.
set(' ')
76             self.paid.
set(' ')
77             self.due.
set(' ')
78             self.Display.delete(
'1.0', END)
79             self.list.delete(
0, END)
80
81         def Delete():
82             Fee_Backend.delete(st[
0])
83             Reset()
84             View()
85
86         def Receipt():
87             self.Display.delete(
'1.0', END)
88             self.Display.insert(END,
'\t\tRECEIPT' + '\n\n')
89             self.Display.insert(
90                 END,
'\tReceipt No.\t :' + self.recpt.get() + '\n')
91             self.Display.insert(END,
'\tStudent Name :' +
92                                 self.name.
get() + '\n')
93             self.Display.insert(END,
'\tAdmission No.\t:' +
94                                 self.admsn.
get() + '\n')
95             self.Display.insert(
96                 END,
'\tDate\t :' + self.date.get() + '\n')
97             self.Display.insert(
98                 END,
'\tBranch\t :' + self.branch.get() + '\n')
99             self.Display.insert(
100                 END,
'\tSemester \t :' + self.sem.get() + '\n\n')
101
102             x1 = (self.var_1.
get())
103             x2 = (self.paid.
get())
104             x3 = (x1 - x2)
105
106             self.Display.insert(END,
'\tTotal Amount :' + str(x1) + '\n')
107             self.Display.insert(END,
'\tPaid Amount :' + str(x2) + '\n')
108             self.Display.insert(END,
'\tBalance\t :' + str(x3) + '\n')
109
110             self.due.
set(x3)
111
112         def Search():
113             self.list.delete(
0, END)
114             
for row in Fee_Backend.search(self.recpt.get(), self.name.get(), self.admsn.get(), self.date.get(),
115                                           self.branch.
get(), self.sem.get(), self.total.get(), self.paid.get(),
116                                           self.due.
get()):
117                 self.list.insert(END, row, str(
' '))
118
119         def Update():
120             Fee_Backend.delete(st[
0])
121             Insert()
122
123         def Exit():
124             Exit = tkinter.messagebox.askyesno(
125                 
'Attention', 'Confirm, if you want to Exit')
126             
if Exit > 0:
127                 root.destroy()
128                 
return
129
130         # ==================================================Frames===================================================
131         Main_Frame = Frame(self.master, bg=
'lightblue')
132         Main_Frame.grid()
133
134         Title_Frame = LabelFrame(
135             Main_Frame, width=
1350, height=100, bg='lightblue', relief='ridge', bd=15)
136         Title_Frame.pack(side=TOP)
137
138         self.lblTitle = Label(Title_Frame, font=(
'arial', 40, 'bold'), text='FEE REPORT',
139                               bg=
'lightblue', padx=13)
140         self.lblTitle.grid(padx=
400)
141
142         Data_Frame = Frame(Main_Frame, width=
1350, height=350,
143                            bg=
'lightblue', relief='ridge', bd=15)
144         Data_Frame.pack(side=TOP, padx=
15)
145
146         Frame_1 = LabelFrame(Data_Frame, width=
850, height=350, bg='Navajo white', relief='ridge', bd=8,
147                              text=
'Informations', font=('arial', 15, 'bold'))
148         Frame_1.pack(side=LEFT, padx=
10)
149
150         Frame_2 = LabelFrame(Data_Frame, width=
495, height=350, bg='Navajo white', relief='ridge', bd=8,
151                              text=
'Fee Receipt', font=('arial', 15, 'bold'))
152         Frame_2.pack(side=RIGHT, padx=
10)
153
154         List_Frame = Frame(Main_Frame, width=
1350, height=150,
155                            bg=
'Navajo white', relief='ridge', bd=15)
156         List_Frame.pack(side=TOP, padx=
15)
157
158         Button_Frame = Frame(Main_Frame, width=
1350, height=80,
159                              bg=
'Navajo white', relief='ridge', bd=15)
160         Button_Frame.pack(side=TOP)
161
162         # ===================================================Labels================================================
163         self.recpt_label = Label(Frame_1, text=
'Receipt No. : ', font=(
164             
'arial', 14, 'bold'), bg='Navajo white')
165         self.recpt_label.grid(row=
0, column=0, padx=15, sticky=W)
166
167         self.name_label = Label(Frame_1, text=
'Student Name : ', font=(
168             
'arial', 14, 'bold'), bg='Navajo white')
169         self.name_label.grid(row=
1, column=0, padx=15, sticky=W)
170
171         self.admsn_label = Label(Frame_1, text=
'Admission No. : ', font=(
172             
'arial', 14, 'bold'), bg='Navajo white')
173         self.admsn_label.grid(row=
2, column=0, padx=15, sticky=W)
174
175         self.Date_label = Label(Frame_1, text=
'Date : ', font=(
176             
'arial', 14, 'bold'), bg='Navajo white')
177         self.Date_label.grid(row=
3, column=0, padx=15, sticky=W)
178
179         self.branch_label = Label(Frame_1, text=
'Branch : ', font=(
180             
'arial', 14, 'bold'), bg='Navajo white')
181         self.branch_label.grid(row=
4, column=0, padx=15, sticky=W)
182
183         self.sem_label = Label(Frame_1, text=
'Semester : ', font=(
184             
'arial', 14, 'bold'), bg='Navajo white')
185         self.sem_label.grid(row=
5, column=0, padx=15, sticky=W)
186
187         self.total_label = Label(Frame_1, text=
'TOTAL AMOUNT : ', font=(
188             
'arial', 14, 'bold'), bg='Navajo white')
189         self.total_label.grid(row=
2, column=2, padx=5, sticky=W)
190
191         self.paid_label = Label(Frame_1, text=
'PAID AMOUNT : ', font=(
192             
'arial', 14, 'bold'), bg='Navajo white')
193         self.paid_label.grid(row=
3, column=2, padx=5, sticky=W)
194
195         self.due_label = Label(Frame_1, text=
'BALANCE : ', font=(
196             
'arial', 14, 'bold'), bg='Navajo white')
197         self.due_label.grid(row=
4, column=2, padx=5, sticky=W)
198
199         # ==================================================Entries=================================================
200         self.var_1 = DoubleVar(Frame_1,
value='15000')
201         d1 = datetime.date.today()
202         self.date.
set(d1)
203
204         self.recpt_entry = Entry(Frame_1, font=(
205             
'arial', 14), textvariable=self.recpt)
206         self.recpt_entry.grid(row=
0, column=1, padx=15, pady=5)
207
208         self.name_entry = Entry(Frame_1, font=(
209             
'arial', 14), textvariable=self.name)
210         self.name_entry.grid(row=
1, column=1, padx=15, pady=5)
211
212         self.admsn_entry = Entry(Frame_1, font=(
213             
'arial', 14), textvariable=self.admsn)
214         self.admsn_entry.grid(row=
2, column=1, padx=15, pady=5)
215
216         self.Date_entry = Entry(Frame_1, font=(
217             
'arial', 14), textvariable=self.date)
218         self.Date_entry.grid(row=
3, column=1, padx=15, pady=5)
219
220         self.branch_entry = ttk.Combobox(Frame_1, values=(
' ', 'CSE', 'IT', 'IS', 'CE'),
221                                          font=(
'arial', 14), width=19, textvariable=self.branch)
222         self.branch_entry.grid(row=
4, column=1, padx=15, pady=5)
223
224         self.sem_entry = ttk.Combobox(Frame_1, values=(
' ', 'FIRST', 'SECOND', 'THIRD'), font=('arial', 14), width=19,
225                                       textvariable=self.sem)
226         self.sem_entry.grid(row=
5, column=1, padx=15, pady=5)
227
228         self.total_entry = Entry(Frame_1, font=(
229             
'arial', 14), width=10, textvariable=self.var_1, state='readonly')
230         self.total_entry.grid(row=
2, column=3, padx=8, pady=5)
231
232         self.paid_entry = Entry(Frame_1, font=(
233             
'arial', 14), width=10, textvariable=self.paid)
234         self.paid_entry.grid(row=
3, column=3, pady=5)
235
236         self.due_entry = Entry(Frame_1, font=(
237             
'arial', 14), width=10, textvariable=self.due)
238         self.due_entry.grid(row=
4, column=3, pady=7)
239
240         # ==================================================Frame_2=================================================
241         self.Display = Text(Frame_2, width=
42, height=12,
242                             font=(
'arial', 14, 'bold'))
243         self.Display.grid(row=
0, column=0, padx=3)
244
245         # =============================================List box and scrollbar===========================================
246         sb = Scrollbar(List_Frame)
247         sb.grid(row=
0, column=1, sticky='ns')
248
249         self.list = Listbox(List_Frame, font=(
250             
'arial', 13, 'bold'), width=140, height=8)
251         self.list.bind(
'<<ListboxSelect>>', Tuple)
252         self.list.grid(row=
0, column=0)
253         sb.config(command=self.list.yview)
254
255         # ==================================================Buttons=================================================
256         btnSave = Button(Button_Frame, text=
'SAVE', font=(
257             
'arial', 14, 'bold'), width=10, command=Insert)
258         btnSave.grid(row=
0, column=0, padx=5, pady=5)
259
260         btnDisplay = Button(Button_Frame, text=
'DISPLAY', font=(
261             
'arial', 14, 'bold'), width=10, command=View)
262         btnDisplay.grid(row=
0, column=1, padx=5, pady=5)
263
264         btnReset = Button(Button_Frame, text=
'RESET', font=(
265             
'arial', 14, 'bold'), width=10, command=Reset)
266         btnReset.grid(row=
0, column=2, padx=5, pady=5)
267
268         btnReset = Button(Button_Frame, text=
'UPDATE', font=(
269             
'arial', 14, 'bold'), width=10, command=Update)
270         btnReset.grid(row=
0, column=3, padx=5, pady=5)
271
272         btnSearch = Button(Button_Frame, text=
'SEARCH', font=(
273             
'arial', 14, 'bold'), width=10, command=Search)
274         btnSearch.grid(row=
0, column=4, padx=5, pady=5)
275
276         btnDelete = Button(Button_Frame, text=
'DELETE', font=(
277             
'arial', 14, 'bold'), width=10, command=Delete)
278         btnDelete.grid(row=
0, column=5, padx=5, pady=5)
279
280         btnReceipt = Button(Button_Frame, text=
'RECEIPT', font=(
281             
'arial', 14, 'bold'), width=10, command=Receipt)
282         btnReceipt.grid(row=
0, column=6, padx=5, pady=5)
283
284         btnExit = Button(Button_Frame, text=
'EXIT', font=(
285             
'arial', 14, 'bold'), width=10, command=Exit)
286         btnExit.grid(row=
0, column=7, padx=5, pady=5)
287
288
289 root = Tk()
290 obj = Fee(root)
291 root.mainloop()


Gõ tìm kiếm nhanh...